home *** CD-ROM | disk | FTP | other *** search
- Winsock RCP32.DLL Version 1.7
- Copyright 1994 Denicomp Systems
- All rights reserved
-
-
- DESCRIPTION
- -----------
-
- Winsock RCP32.DLL is a Microsoft Win32 Dynamic Link Library (DLL) that
- provides a Windows Sockets compatible function that allows you to copy files
- over TCP/IP using the RCP protocol. You can copy files from a Windows PC to
- a remote host, from the remote host to your PC, or between two remote hosts.
-
- The function calls in RCP32.DLL are similar to those in the 16-bit Winsock
- RCP.DLL available for Windows 3.1. However, they are NOT completely
- compatible; new parameters have been added to the 32-bit versions.
-
- Winsock RCP32.DLL provides most of the services of the "rcp" command found
- on many Unix systems, including recursive copies. It also includes the
- ability to convert text files to the appropriate format for Unix or MS-DOS.
-
- The remote host must be a system running the rshd server (a Unix system,
- a Windows 3.x PC running Denicomp Systems' Winsock RSHD, or a Windows NT
- system running Denicomp Systems' Winsock RSHD/NT).
-
-
- REQUIREMENTS
- ------------
-
- Winsock RCP32.DLL requires a PC running Windows NT or Windows 95 or any
- other Windows operating system that supports WSOCK32.DLL, a connection
- via TCP/IP to a remote host running rshd, and any programming language that
- supports calls to 32-bit DLL functions, such as C.
-
-
-
- =============================================================================
-
- FUNCTION: WinsockRCP
-
- Syntax:
- -------
-
- C:
-
- INT WinsockRCP (hWndParent, Title, Src, Dest,
- RecurFlag, AsciiFlag, ConsoleFlag, CaseFlag, HiddenFlag,
- SpaceChar)
-
- HWND hWndParent;
- char *Title;
- char *Src;
- char *Dest;
- int RecurFlag;
- int AsciiFlag;
- int ConsoleFlag;
- int CaseFlag;
- int HiddenFlag;
- int SpaceChar;
-
-
- * Visual Basic:
-
- Declare Function WinsockRCP Lib "RCP32.DLL"
- (ByVal hWndParent As Integer,
- ByVal Title As String,
- ByVal Src As String,
- ByVal Dest As String,
- ByVal RecurFlag As Integer,
- ByVal AsciiFlag As Integer,
- ByVal ConsoleFlag As Integer,
- ByVal CaseFlag As Integer,
- ByVal HiddenFlag As Integer,
- ByVal SpaceChar As Integer) As Integer
-
-
- * - Requires a version of Visual Basic that can call 32-bit DLL's
-
-
- PowerBuilder:
-
- (In Global External Functions Window)
-
- Function Int WinsockRCP (Int hWndParent, &
- Ref String Title, &
- Ref String Src, &
- Ref String Dest, &
- Int RecurFlag, &
- Int AsciiFlag, &
- Int ConsoleFlag, &
- Int CaseFlag, &
- Int HiddenFlag, &
- Int SpaceChar) Library "RCMD32.DLL"
-
- Usage:
- ------
-
- The WinsockRCP function copies the Source to the Destination. The
- Source and Destinations are file specifications that can include a
- user name, a host name, and a file name, which may include wildcard
- characters, such as * and ?.
-
- Any errors that occur are displayed in standard Windows message boxes.
- See the WinsockRCP2() function if you wish to handle the displaying
- of error messages within your program.
-
-
- Parameters:
- -----------
-
- hWndParent: The handle (HWND) of a window in your application. The
- WinsockRCP function may produce diagnostic error messages
- using the Windows MessageBox function. This is used to
- specify the "parent" window to the MessageBox function. It may
- be NULL, meaning that the message box has no parent.
-
- NOTE: If your program is a Windows NT "console"
- application, you should specify NULL for this
- parameter and see the ConsoleFlag parameter
- for details about displaying error messages to
- the console window.
-
- Title: The title of your application or some other title. If any
- diagnostic error messages are displayed using the Windows
- MessageBox function, this will be used as the title of the
- message box.
-
- Src: The file or directory to copy. See below for the format.
-
- Dest: The destination of the file(s). See below for the format.
-
- RecurFlag: Specifies whether or not the copy should be recursive.
- A recursive copy copies entire directory trees. The options are:
-
-
- 0 - Directories will not be copied. If you attempt to copy a directory,
- you will receive an error message. This occurs if you explicitly try
- to copy a directory by specifying its name or directory names are
- matched by the wildcard pattern you specify. If you specify a
- wildcard pattern that matches both files and directories, the files
- will be copied, but you will receive an error message for each
- directory matched.
-
- 1 - Directories will be recursively copied. If you explicitly copy a
- directory by specifying its name, all files in that directory and
- the files in all subdirectories of that directory will be copied.
- The directory structure will be recreated on the destination system.
- If you specify a wildcard pattern, all directories matching that
- pattern will be recursively copied in addition to any matching files.
-
- -1 - Specifying -1 (negative one) will not recursively copy directories,
- but it will suppress any error messages if your wildcard pattern
- matches directories. That is, your wildcard pattern will match only
- files, not directories. This is similar to specifying 0 (zero), but
- you will not receive error messages if you attempt to copy
- directories.
-
- AsciiFlag: Specifies whether or not the copy should convert the file
- to the proper text file format. If the file is being copied
- TO a remote host, CR/NL (ASCII 13/10) combinations are replaced
- with one NL (ASCII 10). If the file is being copied FROM a
- remote host, NL's are replaced by CR/NL combinations.
-
- Use a value of 0 if the files are not to be converted or
- a value of 1 if they are to be converted.
-
-
- ConsoleFlag: Specifies whether or not your application is a Windows NT
- "console" application. If you specify a value of 0, error
- messages will be displayed in standard Windows message boxes.
- If you specify a value of 1, error messages will be displayed
- to the console window using the "printf" function.
-
-
- CaseFlag: Specifies whether or not the case of filenames is preserved
- when performing recursive copies or using wildcards.
-
- This affects recursive and wildcard copies ONLY. If you
- use a specific, individual filename, the case you use will
- be preserved.
-
- With Windows NT, filenames can be stored using mixed case
- characters, even though the filesystem is NOT case sensitive.
- For example, "ABC" and "abc" represent the same file. However,
- the directory entry is displayed in the case you used when the
- file was created.
-
- If you specify a value of 0, the case of filenames will NOT
- be preserved. All filenames will be converted to lower case
- characters as they are received from or sent to the host.
-
- If you specify a value of 1, the case of filenames IS
- preserved. Filenames will be created on the local system
- in the same case as they existed on the remote host. Likewise,
- filenames on the local system will be created in the same
- case on the remote host as they appear in the directory on
- the local system.
-
-
- HiddenFlag: Specifies whether or not files with the "hidden" attribute
- are copied when doing recursive copies or using wildcards.
-
- If you specify a value of 0, hidden files will not be
- copied. If you specify a value of 1, hidden files will
- be copied.
-
-
- SpaceChar: Allows you to substitute a character for space characters
- (ASCII 32) in filenames.
-
- If you specify a value of 0, filenames are sent to the remote
- host exactly as they appear on the local system or exactly
- as specified in the Dest parameter.
-
- Some systems cannot easily handle filenames with embedded
- spaces. If you pass a character in this parameter
- (as an integer value), that character will be substituted
- for each space in the filename created on the remote host.
-
- For example, if you pass an underscore (_) in this parameter,
- the filename:
-
- "this is a file.txt"
-
- will be created on the remote host as:
-
- "this_is_a_file.txt"
-
- This affects ONLY directory names and filenames created on the
- remote host. It has no effect when files are being copied from
- the remote host to the local system.
-
-
- Source and Dest Specifications
- ------------------------------
-
- Both the Source and Dest parameters must be of the following format:
-
- [[User@][Host:]]{File | Dir}
-
-
- User@ (optional) Specifies the user name to be used at the remote
- host. If this prefixes the Host: parameter, this user name
- overrides the user name of the PC.
-
- Host: Specifies the host name of the remote host. This is not
- required if the file or directory referenced is on the PC.
- This host must be a system running the rshd server process.
- That is, you cannot use the host name of another PC running
- Windows or MS-DOS.
-
- File Specifies the file name of the source or destination file. You
- may use wildcard characters to copy multiple source files. You
- may also specify multiple source files individually by separating
- the names with spaces.
-
- Dir Specifies the file name of the source or destination directory.
- The source may be a directory only if you are using the recursive
- copy option. The destination must be a directory if you are
- copying multiple files or copying recursively.
-
-
-
- Return Value:
- -------------
-
- If WinsockRCP successfully copies all specified files, it will return a
- positive value that denotes the total number of files copied. Note that this
- number includes only individual files copied, not directory names created
- through recursive copies.
-
- However, if you copy files between two remote hosts (you specify a host name
- in the source and destination, resulting in no files copied to or from the
- local PC), a success will return zero, not the number of files copied.
-
- If WinsockRCP is not successful, it will return a negative number indicating
- the last error that occurred. A list of these error numbers is provided
- later. Note that if multiple files are to be copied, it will return a
- negative value if an error occurs on any of the transfers. WinsockRCP may
- have successfully copied files prior to the error and depending on the
- problem, may continue to copy the remaining files. If you are copying
- multiple files, the RCP protocol does not stop copying files when an error
- occurs unless it is a network error.
-
-
- Notes:
- ------
-
- A Host: must be specified for either the Source or Dest parameters, or
- both. You cannot use WinsockRCP to copy files locally; you will receive
- an error if you try.
-
- You should not use the Host: parameter when referencing local files. If
- you do, you must be running a Remote Shell Daemon (RSHD) that allows RCP
- transfers, such as Denicomp Systems' Winsock RSHD.
-
- If a full directory path is not specified for a remote host, the path
- begins at the user's home directory. That is, if the file/directory
- name specified after the Host: parameter does not begin with a slash (/),
- it is assumed to reference a file/directory in the user's home directory.
-
- For example, the file "joe@remhost:file.txt" refers to the file "file.txt"
- in the home directory of the user "joe" on the host "remhost".
-
- Filenames may contain either slashes (/) or backslashes (\) as directory
- separators, for either the host file/directory or file/directories on the
- PC. They will be converted to the appropriate separator.
-
- You can copy multiple files by using wildcard characters, such as * or ?.
-
- The Source and Dest parameters may include only ONE file specification
- each. That is, you CANNOT specify multiple source files by separating
- them with spaces as you can with the "rcp" command. To copy multiple
- individual filenames (that cannot be specified using wildcards or using
- a recursive copy), you must call WinsockRCP for each file or use the
- WinsockArrRCP or WinsockArrRCP2 functions.
-
- If you copy multiple source files with wildcard characters, the destination
- the destination must be a directory.
-
- Note that a colon (:) terminates the host name. This causes a problem
- when filenames on the PC require a drive letter (e.g. A:). If a file
- name specification begins with one character between A and Z and is
- followed by a colon (:), WinsockRCP will interpret this as a drive letter
- instead of a host name. This means that WinsockRCP cannot handle one
- character host names.
-
- The destination cannot contain only a drive specification (e.g. A:). It
- must also include a filename or a directory name. If the destination is
- the current directory on the drive, use "." (e.g. A:.).
-
- Using the ASCII conversion option to transfer files TO the remote host will
- slow the operation of Winsock RCP32.DLL somewhat because it must read each
- file twice. It reads the file once to calculate the new translated file
- size, then reads it again to transfer the data. This is because the RCP
- protocol requires that the exact file size be transmitted before the actual
- data in the file is sent. Without the conversion option, the file size can
- be found by examining the file's directory entry, but with the conversion
- option, the file's contents must be examined to determine the size after
- CR/NL combinations are replaced with NL.
-
- The ASCII conversion option will also slow Winsock RCP when when
- transferring files FROM the remote host, but only slightly.
-
- If transmission speed is critical, consider using utilties to translate the
- text files after they are transferred.
-
-
- SECURITY
- --------
-
- User Names
- ----------
-
- The local user name determines the file access privileges WinsockRCP
- uses at the remote host. This name also determines the ownership and
- access modes of the destination file or files.
-
- The local user name is normally the name you used when logging in to
- Windows NT or Windows 95. For example, if you logged in to Windows as
- the user "joed", WinsockRCP will use "joed" as the user name at the remote
- host. WinsockRCP will always convert this name to all lowercase characters.
-
- If you specify a user name in either the source or destination filenames
- using the "user@host:" construct, that name will be used instead of your
- Windows user name.
-
- To maintain some compatibility with the 16-bit version, WinsockRCP will
- also continue to look at the file WIN.INI in the Windows directory
- (e.g. \WINNT35 or \WIN95) for an alternate user name.
-
- If WIN.INI contains a section named "[RCP]" and contains an entry named
- "User" in that section, the name specified there will be used as the local
- user name. For example, WIN.INI might contain:
-
- [RCP]
- User=joe
-
- If this appeared in WIN.INI, the local user name would be "joe" and
- WinsockRCP would use this name at the remote host.
-
- To support multiple users, WinsockRCP will also look for a section named
- "[RCP-user]" in WIN.INI first for an alternate user name, where the "user"
- in the section name is the name used to log in to Windows NT/95. WinsockRCP
- will look at this section first; if it does not exist, it will then look
- at the "[RCP]" section.
-
- For example, if "Mary Jones" and "John Smith" are both users on the Windows
- PC, but their user names at the remote host are "mary" and "joe" respectively,
- WIN.INI might look like this:
-
- [RCP-John Smith]
- User=john
-
- [RCP-Mary Jones]
- User=mary
-
- When the Windows user "John Smith" runs a program using WinsockRCP, "john"
- will be used at the remote host. When the Windows user "Mary Jones" runs
- the program, "mary" will be used instead.
-
- Please note that the use of WIN.INI is supported only to maintain some
- compatibility with the 16-bit version of RCP.DLL. It is highly recommended
- that you maintain the same user names across your systems.
-
-
- Unix Security
- -------------
-
- If the remote host is running the Unix operating system, it allows
- access if one of the following conditions is satisfied:
-
- * The name of the local host (your PC) is listed in the /etc/hosts file
- on the remote host (Unix) with the proper IP address and as an equivalent
- host in the /etc/hosts.equiv file on the remote host.
-
- * If the name of your PC is not in the /etc/hosts.equiv file, the user's home
- directory on the remote host must contain a .rhosts file that lists the
- name of your PC and your user name.
-
- The .rhosts file in the user's home directory must be owned by either
- the user specified or "root", and only the owner should have read and write
- access. That is, it must have permissions of 0600.
-
- * The user's login on the remote host does not require a password.
-
-
-
- EXAMPLE
- -------
-
- The CRCP program included with the distribution shows a full working
- example of the WinsockRCP2() function call. It is similar to the
- WinsockRCP() function call illustrated here:
-
- // This example copies the file "system.doc" in the user tom's home
- // directory on the host "remhost" to the directory "\doc" on the PC
-
- int result;
-
- char *rtitle = "Winsock RCP32.DLL Sample";
- char *src = "tom@remhost:system.doc"
- char *dest = "\\doc"
-
- result = WinsockRCP(NULL,rtitle,src,dest,0,0,1,0,0,0);
-
- if (result < 0)
- MessageBox(NULL,"Remote Copy Was Not Successful",rtitle,MB_OK);
- else
- MessageBox(NULL,"Remote Copy Was Successful",rtitle,MB_OK);
-
-
-
-
- =============================================================================
-
- FUNCTION: WinsockRCP2
- ---------------------
-
- C:
-
- INT WinsockRCP2 (Src, Dest, RecurFlag, AsciiFlag, CaseFlag, HiddenFlag,
- SpaceChar, ErrMsg, ErrLen)
- char *Src;
- char *Dest;
- int RecurFlag;
- int AsciiFlag;
- int CaseFlag;
- int HiddenFlag;
- int SpaceChar;
- char *ErrMsg;
- int ErrLen;
-
- Visual Basic:
-
- Declare Function WinsockRCP2 Lib "RCP32.DLL"
- (ByVal Src As String,
- ByVal Dest As String,
- ByVal RecurFlag As Integer,
- ByVal AsciiFlag As Integer,
- ByVal CaseFlag As Integer,
- ByVal HiddenFlag As Integer,
- ByVal SpaceChar As Integer,
- ByVal ErrMsg As String,
- ByVal ErrLen As Integer) As Integer
-
-
- PowerBuilder: (In Global External Functions Window)
-
- Function Int WinsockRCP (Ref String Src, &
- Ref String Dest, &
- Int RecurFlag, &
- Int AsciiFlag, &
- Int CaseFlag, &
- Int HiddenFlag, &
- Int SpaceChar, &
- Ref String ErrMsg, &
- Int ErrLen) Library "RCMD32.DLL"
- Usage:
- ------
-
- The WinsockRCP2 function performs the same function as the WinsockRCP
- function, but does not display error messages in Windows message boxes.
- Instead, it returns the error messages in the area you provide. You can
- then display them, ignore them, or process them as you require.
-
- Parameters:
- -----------
-
- Src: The file or directory to copy. See WinsockRCP for details.
-
- Dest: The destination of the file(s). See WinsockRCP for details.
-
- RecurFlag: Specifies how directories should be copied. See WinsockRCP for
- details.
-
- AsciiFlag: Specifies whether or not the copy should convert the file to the
- proper text file format. See WinsockRCP for details.
-
- CaseFlag: Specifies whether or not the case of filenames is preserved
- when performing recursive copies or using wildcards.
-
- This affects recursive and wildcard copies ONLY. If you
- use a specific, individual filename, the case you use will
- be preserved.
-
- With Windows NT, filenames can be stored using mixed case
- characters, even though the filesystem is NOT case sensitive.
- For example, "ABC" and "abc" represent the same file. However,
- the directory entry is displayed in the case you used when the
- file was created.
-
- If you specify a value of 0, the case of filenames will NOT
- be preserved. All filenames will be converted to lower case
- characters as they are received from or sent to the host.
-
- If you specify a value of 1, the case of filenames IS preserved.
- Filenames will be created on the local system in the same case
- as they existed on the remote host. Likewise, filenames on the
- local system will be created in the same case on the remote
- host as they appear in the directory on the local system.
-
- HiddenFlag: Specifies whether or not files with the "hidden" attribute
- are copied when doing recursive copies or using wildcards.
-
- If you specify a value of 0, hidden files will not be
- copied. If you specify a value of 1, hidden files will
- be copied.
-
- SpaceChar: Allows you to substitute a character for space characters
- (ASCII 32) in filenames.
-
- If you specify a value of 0, filenames are sent to the remote
- host exactly as they appear on the local system or exactly
- as specified in the Dest parameter.
-
- Some systems cannot easily handle filenames with embedded
- spaces. If you pass a character in this parameter
- (as an integer value), that character will be substituted
- for each space in the filename created on the remote host.
-
- For example, if you pass an underscore (_) in this parameter,
- the filename:
-
- "this is a file.txt"
-
- will be created on the remote host as:
-
- "this_is_a_file.txt"
-
- This affects ONLY directory names and filenames created on the
- remote host. It has no effect when files are being copied from
- the remote host to the local system.
-
- ErrMsg: A pointer to an area of memory where any error messages generated
- during the copy can be stored. It cannot be NULL. This is
- explained in more detail later.
-
- ErrLen: The total size in bytes of ErrMsg. This must be greater than or
- equal to 1.
-
-
- This function operates in the same manner as WinsockRCP, but if any errors
- occur during the transfer, the error messages will be accumulated in ErrMsg.
- Unlike WinsockRCP, they will not be displayed in message boxes. When the
- function returns, if the return value is negative, the text of any error
- messages will be stored in ErrMsg.
-
- Note that multiple errors can occur, since the RCP protocol does not
- necessarily stop transferring files on certain errors. If multiple errors do
- occur, each error message will be stored in ErrMsg and they will be separated
- by newline characters (ASCII 10). Hence, ErrMsg will be suitable for use
- with the Windows MessageBox function if you desire.
-
- ErrMsg should be large enough to hold at least a few error messages.
- WinsockRCP2 will not exceed the size of ErrMsg as specified by the ErrLen
- parameter. If the area is not large enough to hold an error message, it will
- not be stored. It is possible that the text of all error messages will not
- be stored in ErrMsg if a large number of errors occur.
-
- The size of ErrMsg (and the value specified for ErrLen) must be greater than
- zero. If you specify a very small value for ErrLen, no error text will ever
- be stored in ErrMsg since no message will fit, but return values will still
- be negative if errors occur.
-
- Return Value:
- -------------
-
- If WinsockRCP2 successfully copies all specified files, it will return a
- positive value that denotes the total number of files copied. Note that this
- number includes only individual files copied, not directory names created
- through recursive copies.
-
- However, if you copy files between two remote hosts (you specify a host name
- in the source and destination, resulting in no files copied to or from the
- local PC), a success will return zero, not the number of files copied.
-
- If WinsockRCP2 is not successful, it will return a negative number indicating
- the last error that occurred. A list of these error numbers is provided
- later. Note that if multiple files are to be copied, it will return a
- negative value if an error occurs on any of the transfers. WinsockRCP2 may
- have successfully copied files prior to the error and depending on the
- problem, may continue to copy the remaining files. If you are copying
- multiple files, the RCP protocol does not stop copying files when an error
- occurs unless it is a network error.
-
-
- Declaring the WinsockRCP2 Function in Other Languages
- -----------------------------------------------------
-
- Declarations are provided for the functions in RCMD32.DLL for C, Visual
- Basic, and Powerbuilder.
-
- If you are using some other language, please keep in mind that the
- ErrMsg parameter in the WinsockRCP2() function call is modified by the DLL.
-
- Be sure when creating declarations in your language for the RCMD32.DLL
- functions you keep this in mind. Some languages require that you specify
- which parameters passed to DLL's will be modified and should be passed as
- a pointer, not as a copy of the variable value in the program. You may
- receive errors if you do not do this.
-
-
- Languages using Dynamically Allocated Strings
- ---------------------------------------------
-
- The WinsockRCP2 function requires you to pass a pointer to an area of
- memory to store error messages should errors occur (the ErrMsg parameter).
-
- When using C, you can simply pass a pointer to a char array (for example,
- char errmsg[256]) or a pointer to a dynamically allocated area of memory
- (using malloc() or HeapAlloc()).
-
- When using a language that uses dymamically allocated strings, such as
- Visual Basic or Powerbuilder, you must first "force" memory to be allocated
- to a string before passing it as the ErrMsg parameter in WinsockRCP2().
- If you do not do this, your program will most likely abort with an error.
-
- This can be done in Visual Basic with the String$() function. For example,
- to allocate 256 bytes in the string EMsg, use the following:
-
- Dim EMsg As String
-
- EMsg = String$(256,Chr$(0))
-
-
- This will allocate 256 bytes in EMsg and fill it with null characters. If
- you just tried to use EMsg without doing this, your program would abort
- with a memory access error if WinsockRCP2 tried to store an error message
- in EMsg.
-
- Powerbuilder has a similar requirement, but you use the Space() function.
- For example:
-
- String EMsg
-
- EMsg = Space(256)
-
- This will allocate 256 bytes in EMsg and fill it with space characters.
- This is acceptable because WinsockRCP2() will return the error message
- as a null-terminated string.
-
-
- EXAMPLE
- -------
-
- For a full working example of the WinsockRCP2 function in C, see the CRCP
- program included in the distribution.
-
- // This example copies the file "system.doc" in the user tom's home
- // directory on the host "remhost" to the directory "\doc" on the PC
- // If any error occurs, we will display it.
-
- int result;
-
- char *src = "tom@remhost:system.doc"
- char *dest = "\\doc"
- char errmsg[256];
-
- result = WinsockRCP2(rtitle,src,dest,0,0,0,0,0,errmsg,
- sizeof(errmsg));
-
- if (result < 0)
- MessageBox(NULL,errmsg,"RCP Error!",MB_OK);
-
-
- =============================================================================
-
- FUNCTION: WinsockArrRCP
-
- Syntax:
- -------
-
- C:
-
- INT WinsockArrRCP (hWndParent, Title, ArgArr, ArgCount,
- RecurFlag, AsciiFlag, ConsoleFlag, CaseFlag, HiddenFlag,
- SpaceChar)
-
- HWND hWndParent;
- char *Title;
- char **ArgArr;
- int ArgCount;
- int RecurFlag;
- int AsciiFlag;
- int ConsoleFlag;
- int CaseFlag;
- int HiddenFlag;
- int SpaceChar;
-
-
- Usage:
- ------
-
- The WinsockArrRCP function is similar to the WinsockRCP function, but
- accepts an array of strings containing the source and destination filenames.
-
- This allows you to copy multiple source files/directories in a single call
- when the files cannot be named using a single wildcard pattern.
-
- Any errors that occur are displayed in standard Windows message boxes.
- See the WinsockArrRCP2() function if you wish to handle the displaying
- of error messages within your program.
-
-
- Parameters:
- -----------
-
- The parameters to the WinsockArrRCP function are the same as those passed to
- the WinsockRCP function, except for the Src and Dest parameters.
-
- WinsockArrRCP substitutes the following parameters for Src and Dest:
-
-
- ArgArr: Pointer to an array of strings. This array must contain two
- or more strings. The LAST string in the array will be
- considered the destination of the copy.
-
- ArgCount: The number of strings in the array.
-
-
-
- Notes:
- ------
-
- The same rules for WinsockRCP apply to this function. Refer to that
- section. However, here are a few important points:
-
- A Host: must be specified for either the Source files/directories or the
- destination file/directory (or both). The destination is always the LAST
- string in the array.
-
- If you copy multiple source files, the destination the destination must be
- a directory.
-
-
- IMPORTANT NOTE:
-
- The WinsockArrRCP function MAY MODIFY the values in the array of strings
- passed to it. To avoid confusion and problems with directory separator
- differences between operating systems, WinsockArrRCP will convert all
- backslashes (\) that appear in the array of strings to slashes (/). After
- the WinsockArrRCP completes, the array of strings will be changed in your
- program if it contained any backslashes.
-
- If you require that the strings be maintained in their original form,
- make a copy of the array and pass the copy to WinsockArrRCP.
-
-
- EXAMPLE
- -------
-
- // This example copies the files "plan.xls" and "bills.xls" in the
- // current directory to the "/u/hold" directory on the "unix486" system.
-
- int result;
-
- char *rtitle = "Winsock RCP32.DLL Sample";
- char *args[] = { "plan.xls", "bills.xls", "unix486:/u/hold" };
-
- result = WinsockArrRCP(NULL,rtitle,args,3,0,0,1,0,0,0);
-
- if (result < 0)
- MessageBox(NULL,"Remote Copy Was Not Successful",rtitle,MB_OK);
- else
- MessageBox(NULL,"Remote Copy Was Successful",rtitle,MB_OK);
-
-
-
- =============================================================================
-
-
- FUNCTION: WinsockArrRCP2
- ------------------------
-
- C:
-
- INT WinsockArrRCP2 (ArgArr, ArgCount, RecurFlag, AsciiFlag, CaseFlag,
- HiddenFlag, SpaceChar, ErrMsg, ErrLen)
- char **ArgArr;
- int ArgCount;
- int RecurFlag;
- int AsciiFlag;
- int CaseFlag;
- int HiddenFlag;
- int SpaceChar;
- char *ErrMsg;
- int ErrLen;
-
- Usage:
- ------
-
- The WinsockArrRCP2 function is similar to the WinsockRCP2 function, but
- accepts an array of strings containing the source and destination filenames.
-
- This allows you to copy multiple source files/directories in a single call
- when the files cannot be named using a single wildcard pattern.
-
- This function is similar to the WinsockArrRCP function, but does not
- display error messages in Windows message boxes. Instead, it returns the
- error messages in the area you provide. You can then display them, ignore
- them, or process them as you require.
-
-
- Parameters:
- -----------
-
- The parameters to the WinsockArrRCP2 function are the same as those passed to
- the WinsockRCP2 function, except for the Src and Dest parameters.
-
- WinsockArrRCP2 substitutes the following parameters for Src and Dest:
-
-
- ArgArr: Pointer to an array of strings. This array must contain two
- or more strings. The LAST string in the array will be
- considered the destination of the copy.
-
- ArgCount: The number of strings in the array.
-
-
-
- Notes:
- ------
-
- The same rules for WinsockRCP2 apply to this function. Refer to that
- section. However, here are a few important points:
-
- A Host: must be specified for either the Source files/directories or the
- destination file/directory (or both). The destination is always the LAST
- string in the array.
-
- If you copy multiple source files, the destination the destination must be
- a directory.
-
-
- IMPORTANT NOTE:
-
- The WinsockArrRCP2 function MAY MODIFY the values in the array of strings
- passed to it. To avoid confusion and problems with directory separator
- differences between operating systems, WinsockArrRCP2 will convert all
- backslashes (\) that appear in the array of strings to slashes (/). After
- the WinsockArrRCP2 completes, the array of strings will be changed in your
- program if it contained any backslashes.
-
- If you require that the strings be maintained in their original form,
- make a copy of the array and pass the copy to WinsockArrRCP2.
-
-
- EXAMPLE
- -------
-
- // In this example, we will simply use the standard command line arguments
- // (argv[]) and pass them through to the WinsockArrRCP2 function. If you
- // modify the CRCP example program included with this package to do this
- // you will be able to specify multiple source files on the command line.
- // If any error occurs, we will display it.
-
- main(int argc, char **argv)
- {
- int result;
-
- char errmsg[256];
-
- // Skip argv[0] - that's the program name!
- result = WinsockArrRCP2(&argv[1],argc-1,0,0,0,0,0,errmsg,
- sizeof(errmsg));
-
- if (result < 0)
- MessageBox(NULL,errmsg,"RCP Error!",MB_OK);
- }
-
- =============================================================================
-
-
- RETURN VALUES FOR ERRORS
- ------------------------
-
- When an error occurs during a file transfer with WinsockRCP, WinsockRCP2,
- WinsockArrRCP, or WinsockArrRCP2, a negative value is returned indicating
- the last error that occurred. Constants for these error numbers are defined
- for you in the files RCPERRS.H (for C) and RCPERRS.BAS (for Visual Basic).
- The following are the possible values:
-
-
- Error Meaning
- Number
-
- -1 No host specified for any filename.
-
- -2 Unacceptable user name before @ sign in filename.
-
- -3 The error message was received from the remote host.
-
- -4 Lost the connection to the host prematurely (network error)
-
- -5 Cannot allocate memory.
-
- -6 Can't get user from Windows or WIN.INI.
-
- -7 Target is ambiguous.
-
- -8 Invalid file type to send (directory was specified without recursion).
-
- -9 No match for wildcard on remote host.
-
- -10 RCP Protocol Error.
-
- -11 Can't get information about a directory on the PC.
-
- -12 Error in the wildcard pattern used.
-
- -13 Can't get information about a file to send.
-
- -14 Can't open a file to send.
-
- -15 Error reading a file while sending.
-
- -16 Cannot get the filenames in a directory.
-
- -17 Pathname is too long.
-
- -18 Cannot open a file to be received for writing.
-
- -19 Error adjusting file size after receiving. Possibly out of disk space.
-
- -20 Error writing file while receiving. Possibly out of disk space.
-
- -21 Too many simultaneous connections to RCP32.DLL.
-
-
-
- SUPPORT
- -------
-
- Support is available via U.S. Mail and Compuserve/Internet:
-
- Denicomp Systems
- P.O. Box 731
- Exton, PA 19341
-
- Compuserve: 71612,2333
- Internet: 71612.2333@compuserve.com
-
-